var pathSum = function (root, sum) {
  if (!root) return [];
  let res = [];
  function getPath(root, sum, path = []) {
    if (root === null) return;
    path.push(root.val);
    sum -= root.val;
    if (root.left === null && root.right === null && sum === 0) {
      res.push(path.slice());
    }
    getPath(root.left, sum, path);
    getPath(root.right, sum, path);
    // 这里一定要弹出当前元素，这是回溯算法关键的一步
    path.pop();
  }
  getPath(root, sum);
  return res;
};
